package com.pond.pond.service;

import com.pond.pond.domain.UpdateLog;
import com.pond.pond.domain.dto.UpdateLogRequest;

import java.util.List;
import java.util.Map;

/**
 * 更新日志Service接口
 */
public interface IUpdateLogService {
    
    /**
     * 查询更新日志
     *
     * @param id 更新日志主键
     * @return 更新日志
     */
    public UpdateLog selectUpdateLogById(Long id);

    /**
     * 查询更新日志列表
     *
     * @param updateLog 更新日志
     * @return 更新日志集合
     */
    public List<UpdateLog> selectUpdateLogList(UpdateLog updateLog);

    /**
     * 新增更新日志
     *
     * @param updateLog 更新日志
     * @return 结果
     */
    public int insertUpdateLog(UpdateLog updateLog);

    /**
     * 修改更新日志
     *
     * @param updateLog 更新日志
     * @return 结果
     */
    public int updateUpdateLog(UpdateLog updateLog);

    /**
     * 批量删除更新日志
     *
     * @param ids 需要删除的更新日志主键集合
     * @return 结果
     */
    public int deleteUpdateLogByIds(Long[] ids);

    /**
     * 删除更新日志信息
     *
     * @param id 更新日志主键
     * @return 结果
     */
    public int deleteUpdateLogById(Long id);

    /**
     * 记录更新日志
     *
     * @param request 更新日志请求
     * @param ipAddress IP地址
     * @param userAgent 用户代理
     * @return 日志ID
     */
    public Long recordUpdateLog(UpdateLogRequest request, String ipAddress, String userAgent);

    /**
     * 查询版本分布统计
     *
     * @return 统计结果
     */
    public List<Map<String, Object>> getVersionDistribution();

    /**
     * 查询更新成功率统计
     *
     * @return 统计结果
     */
    public Map<String, Object> getUpdateSuccessRate();

    /**
     * 查询设备更新轨迹
     *
     * @param deviceId 设备ID
     * @return 更新轨迹
     */
    public List<UpdateLog> getDeviceUpdateHistory(String deviceId);
}